package my.springboot3.controller;

import jakarta.validation.Valid;
import my.springboot3.dto.Respond;
import my.springboot3.dto.entity.Category;
import my.springboot3.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@Controller
@RequestMapping("/category")
public class CategoryController {

    @Autowired
    private CategoryService categoryService;

    /**
     * 请求路径：/category
     * 请求方式：GET
     * 接口描述：该接口用于获取当前已登录用户创建的所有文章分类
     */
    @GetMapping()
    public Respond <?> category() {
        List<Category> categories = categoryService.ListAll();
        return Respond.success(categories);
    }

    /**
     * 请求路径：/category/detail
     * 请求方式：GET
     * 接口描述：该接口用于获取当前已登录用户创建的所有文章分类
     */
    @GetMapping("/detail")
    public Respond<?> detail(@RequestParam Integer id) {
        Category category = categoryService.findById(id);
        return Respond.success(category);
    }
    /**
     * 请求路径：/category
     * 请求方式：PUT
     * 接口描述：该接口用于更新文章分类
     */
    @PutMapping
    public Respond<Void> update(@RequestBody @Valid Category category){
        categoryService.update(category);
        return Respond.success();
    }

    /**
     * 请求路径：/category
     * 请求方式：DELETE
     * 接口描述：该接口用于根据ID删除文章分类
     * @param id
     * @return
     */
    @DeleteMapping
    public Respond<Void> delete(@RequestParam Integer id){
        categoryService.deleteById(id);
        return Respond.success();
    }

    /**
     * 请求路径：/category
     * 请求方式：POST
     * 接口描述：该接口用于创建文章分类
     */
    @PostMapping
    public Respond<Void> add(@RequestBody @Valid Category category){
        categoryService.add(category);
        return Respond.success();
    }
}
